// basicnpc.txt
// A very simple, naive text. Creature attacks anything it hates nearby.
// Once it has won, it returns to its home.
// Memory Cells:
//   Cell 0 - How creature moves.
//     0 - If 0, wander randomly. 
//     1 - Stands still until a target appears.
//     2 - Completely immobile, even if target appears.
//   Cell 1,2 - Stuff done flag. If both 0, nothing. Otherwise when this 
//     is killed, set to 1. (Example: If cell 1 is 3 and cell 2 is 5, when
//     creature is killed, sets SDF(3,5) to 1.)
//   Cell 3 - Dialogue node to start with if talked to. if left at 0, this
//     character doesn't talk.

begincreaturescript;

variables;

short i,target,buythings;

body;

beginstate INIT_STATE;
	if (get_memory_cell(0) == 2)
		set_mobility(ME,0);
	break;

beginstate DEAD_STATE;
	// Set the appropriate stuff done flag for this character being dead
	if ((get_memory_cell(1) != 0) || (get_memory_cell(2) != 0))
		set_flag(get_memory_cell(1),get_memory_cell(2),1);
break;

beginstate START_STATE; 
	// if I have a target for some reason, go attack it
	if (target_ok()) {
		if (dist_to_char(get_target()) <= 16)
			set_state(3);
			else set_target(ME,-1);
		}
	
	// Look for a target, attack it if visible
	if (select_target(ME,8,0)) {
		do_attack();
		set_state(3);
		}
		
	// Have I been hit? Strike back!
	if (who_hit_me() >= 0) {
		set_target(ME,who_hit_me());
		do_attack();
		set_state(3);
		}
		
	// Otherwise, just peacefully move around. Go back to start, if I'm too far
	// from where I started.
	if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
		if (get_ran(1,1,100) < 40) 
			return_to_start(ME,1);
		}
		else if (get_memory_cell(0) == 0) {
			fidget(ME,25);
			}

	// if we're in combat and the above didn't give me anything to do, just
	// stop now. Otherwise, game will keep running script, and that eats up CPU time.
	if (am_i_doing_action() == FALSE)
		end_combat_turn();
break;

beginstate 3; // attacking
	if (target_ok() == FALSE)
		set_state(START_STATE);
	do_attack();
break;

beginstate TALKING_STATE;

	if(get_flag(20,1) == 1){
		reset_dialog();
		add_dialog_str(0,"Smid smiles and nods at you.  You, however, immediately confront him about his highest-quality axes.",0);
		add_dialog_str(1,"_My highest-quality axes...?  Well, I distinctly remember making one axe I was incredibly proud of.  It wasn't much larger or different than most of my axes, but was far sharper._",0);
		add_dialog_str(2,"You ask him where the axe went.  _Who did I give it to, you mean?  Oh, I gave it to Chief Licgan.  Why do you ask?_",0);
		add_dialog_str(3,"Smid gave the axe that the Goblin Chief was using to Licgan?  Why did the goblin chief have it, then?  You ask him what kind of weapon could make powerful, deep slice marks.",0);
		add_dialog_str(4,"_Well, the kind of wounds you're describing sound like they come from a Claymore.  The goblins are too small to effectively use one, so the wounds likely came from somebody in our tribe._",0);
		add_dialog_str(5,"So Chief Licgan's axe somehow ended up in the hands of the goblin chief, and a member of your tribe slew Wihcaser?  This doesn't sound good.  Perhaps you should turn to somebody for guidance.",0);
		buythings = run_dialog(1);
		set_flag(20,1,2);
		end();
	}

	if(get_flag(3,1) > 0){
		reset_dialog();
		add_dialog_str(0,"Smid is still here, ready to do business with you.",0);
		add_dialog_choice(0,"Leave.");
		add_dialog_choice(1,"Shop.");
		add_dialog_choice(2,"Identify my items.");
		buythings = run_dialog(0);
		if(buythings == 1){
			end();
		}
		if(buythings == 2){
begin_shop_mode("Smid's Weaponry","Smid is a talented worker, and it shows in the works he has produced.  Since you are on a holy mission, his prices are very reasonable.",6,1,6);
		}
		if(buythings == 3){
			begin_talk_mode(10);
		}
	}
	if(get_flag(3,1) == 0){
		set_flag(3,1,1);
		reset_dialog();
		add_dialog_str(0,"Smid is the village's blacksmith.  He pounds on metal day in and day out, making powerful weapons for the tribe.  He nods and smiles as you approach.",0);
		if(party_size() > 1){
			add_dialog_str(1,"_Good day, Speres!  How are you all faring today?_",0);
		}
		else{
			add_dialog_str(1,"_Good day, Spere!  How are you faring today?_",0);
		}
		add_dialog_str(2,"_I heard about your situation, and while I cannot give my weapons away for free, I promise you a reasonable deal on all of my wares._",0);
		add_dialog_str(3,"_By all means, let me know if you need to buy anything._",0);
		add_dialog_choice(0,"Leave.");
		add_dialog_choice(1,"Shop.");
		add_dialog_choice(2,"Identify my items.");
		buythings = run_dialog(0);
		if(buythings == 1){
			end();
		}
		if(buythings == 2){
begin_shop_mode("Smid's Weaponry","Smid is a talented worker, and it shows in the works he has produced.  Since you are on a holy mission, his prices are very reasonable.",6,1,6);
		}
		if(buythings == 3){
			begin_talk_mode(10);
		}
	}
break;